home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / PC / MISCBAS / BLKFRI2.ASC < prev    next >
Text File  |  1987-01-11  |  10KB  |  365 lines

  1.  
  2. 10 REM   AUTHOR: ROBERT W. BAKER
  3. 20 REM   MODIFIED FOR BASIC-E BY R S MASON   9-25-77
  4. 30 REM    RE-MODIFIED FOR MICROSOFT BY A.R.G.
  5. 33 REM   THIS PROGRAM REQUIRES CP/M WITH 26K OF MEMORY
  6. 36 REM
  7. 40 REM   THIS GAME IS WRITTEN TO PROVIDE A REALISTIC MODEL OF THE
  8. 50 REM   ACTUAL STOCK MARKET RATHER THAN A COMPLETELY RANDOMIZED
  9. 60 REM   HAPPENING OF EVENTS.
  10. 70 REM
  11. 80 REM
  12. 100 DIM A(36,12),U(11,9),E(11,9),K(10),T(10),F(9),M(4,12),X(4)
  13. 102 FOR I=1 TO 36: FOR J=1 TO 12: READ A(I,J): NEXT J: NEXT I
  14. 105 FOR I=1 TO 11: FOR J=1 TO 9: READ U(I,J): NEXT J: NEXT I
  15. 107 FOR I=1 TO 11: FOR J=1 TO 9: READ E(I,J): NEXT J: NEXT I
  16. 111 FOR N=1 TO 10
  17. 112 READ K(N)
  18. 113 NEXT N
  19. 115 V$="HIBXP SP ODMRD SO BT KA ZE BPL"
  20. 120 Y$="$5  $1  NONE$4  $7  NONENONE$2  $6  $3  "
  21. 130 REM
  22. 140 REM   DATA TO SIMULATE REAL LIFE STOCK MARKET
  23. 150 REM
  24. 160 DATA 1,0,0,0,0,0,0,0,0,5,0,0
  25. 170 DATA 0,0,0,0,0,0,-25,0,0,0,0,0
  26. 180 DATA 1,0,0,0,0,0,0,15,0,0,0,0
  27. 190 DATA 0,0,0,0,-5,0,0,0,0,0,0,0
  28. 200 DATA 1,0,0,0,0,0,0,0,0,5,0,0
  29. 210 DATA 0,0,0,0,0,0,5,0,0,0,0,0
  30. 220 DATA 1,0,0,0,0,0,10,0,0,0,0,0
  31. 230 DATA 0,0,10,0,0,0,0,0,0,0,0,0
  32. 240 DATA 1,0,0,0,0,0,15,0,0,0,0,0
  33. 250 DATA 0,0,-5,0,0,0,0,0,0,0,0,0
  34. 260 DATA 1,8,5,5,0,0,0,7,0,0,0,0
  35. 270 DATA 0,0,0,0,0,0,0,0,-25,0,0,0
  36. 280 DATA 1,0,0,0,0,0,0,0,10,0,0,0
  37. 290 DATA 0,0,-10,0,0,0,0,0,0,0,0,0
  38. 300 DATA 1,0,5,0,0,0,0,0,0,0,0,0
  39. 310 DATA 0,10,0,0,0,0,0,0,0,0,1,0
  40. 320 DATA 1,0,0,0,0,17,0,0,0,0,0,0
  41. 330 DATA 0,0,0,0,0,-15,0,0,0,0,0,0
  42. 340 DATA 1,0,0,0,0,0,0,0,10,0,0,0
  43. 350 DATA 0,0,0,0,0,0,0,-15,0,0,0,0
  44. 360 DATA 1,0,0,0,0,0,0,10,0,0,0,0
  45. 370 DATA 0,0,0,0,0,0,0,-15,0,0,0,0
  46. 380 DATA 1,0,0,-8,0,8,0,0,5,0,0,0
  47. 390 DATA 0,-10,0,0,0,0,0,0,0,0,0,0
  48. 400 DATA 1,8,0,0,0,0,0,0,0,0,0,0
  49. 410 DATA 0,0,0,0,0,0,0,-10,0,0,0,0
  50. 420 DATA 1,0,0,3,0,0,0,0,0,4,0,0
  51. 430 DATA 0,-8,0,0,0,0,0,0,0,0,0,0
  52. 440 DATA 1,0,0,0,5,0,0,0,0,0,0,0
  53. 450 DATA 0,0,0,0,0,-10,0,0,0,0,0,0
  54. 460 DATA 1,0,0,0,0,0,0,10,0,0,0,0
  55. 470 DATA 0,-8,-5,0,0,0,0,-7,0,0,0,0
  56. 480 DATA 1,10,0,0,0,0,0,0,0,0,0,0
  57. 490 DATA 0,0,0,0,0,0,0,0,0,-14,0,0
  58. 500 DATA 1,-10,0,0,0,0,0,0,0,0,0,0
  59. 510 DATA 0,0,0,0,0,0,-5,0,0,0,0,0
  60. 520 DATA -2,-10,7,-9,-2,-9,-7,-16,-4
  61. 530 DATA 26,16,25,8,-14,21,14,-4,17
  62. 540 DATA 18,23,11,12,46,18,-5,34,15
  63. 550 DATA 23,28,-2,11,56,19,30,29,14
  64. 560 DATA 20,15,15,7,-20,15,13,-10,12
  65. 570 DATA 17,21,13,-2,37,23,23,19,14
  66. 580 DATA 19,24,17,9,-5,26,13,-7,15
  67. 590 DATA 11,18,14,11,67,15,22,18,13
  68. 600 DATA 13,31,1,14,-11,18,18,-14,10
  69. 610 DATA 14,-8,19,1,-9,25,-10,13,19
  70. 620 DATA 24,24,23,20,51,27,38,33,18
  71. 630 DATA 12,14,13,10,10,20,21,25,8
  72. 640 DATA 7,-6,10,-10,30,6,-19,22,-2
  73. 650 DATA 9,10,7,-5,-20,12,21,18,7
  74. 660 DATA 7,8,5,-6,-40,3,16,-14,4
  75. 670 DATA 8,6,4,-4,40,8,4,-12,3
  76. 680 DATA 6,4,3,3,-15,5,8,-8,5
  77. 690 DATA 5,7,-1,-3,45,6,-10,10,4
  78. 700 DATA -2,6,-3,-8,-20,7,10,14,6
  79. 710 DATA 11,11,-5,-7,30,10,-11,-18,-4
  80. 720 DATA -5,13,-8,6,25,4,18,-22,-4
  81. 730 DATA -8,-10,-10,-15,-20,-20,-23,-25,-7
  82. 740 DATA 5,1,0,4,7,0,0,2,6,3
  83. 750 REM
  84. 760 REM   SECURITY NAMES
  85. 770 REM
  86. 780 A$="HIGHWAY IMPROVEMENT BONDS"
  87. 790 B$="X-PANDO CORPORATION"
  88. 800 C$="SEASIDE PROPERTIES INC."
  89. 810 D$="OLD DOG MUTUAL FUND"
  90. 820 E$="RUBBLE DEVELOPMENT"
  91. 830 F$="SLIPPERY OIL COMPANY"
  92. 840 G$="BUMPY TRANSPORT CO."
  93. 850 H$="KRASH AUTO COMPANY"
  94. 860 I$="ZAP ELECTRONICS   "
  95. 870 J$="BLINKEY POWER & LIGHT CO."
  96. 880 REM
  97. 970 REM
  98. 980 PRINT "WANT INSTRUCTIONS";
  99. 990 INPUT R$
  100. 1000 IF LEFT$(R$,1)="N" THEN 1280
  101. 1010 IF LEFT$(R$,1)<>"Y" THEN 990
  102. 1020 PRINT
  103. 1030 PRINT "THE MAIN OBJECT OF BLACK FRIDAY IS TO SHREWDLY INVEST $5000"
  104. 1040 PRINT"IN THE GAME'S 10 SECURITIES, BUYING AND SELLING EACH YEAR FOR"
  105. 1050 PRINT"A MAXIMUM OF 10 YEARS (ROUNDS) IN AN ATTEMPT TO BECOME"
  106. 1060 PRINT"THE WEALTHIEST PLAYER."
  107. 1070 PRINT
  108. 1080 PRINT"EACH YEAR ALL PLAYERS WILL RECEIVE DIVIDENDS ON EVERY PAYING"
  109. 1090 PRINT"STOCK WHICH IS WORTH $50 OR MORE.  THEN EACH PLAYER WILL"
  110. 1100 PRINT"GET A CHANCE TO SELL ANY STOCKS HE OWNS OR BUY ANY STOCKS"
  111. 1110 PRINT"HE WISHES.  AT THE END OF THE SELECTED NUMBER OF YEARS"
  112. 1120 PRINT"EACH PLAYER'S NET WORTH WILL BE CALCULATED AND THE WEALTHIEST"
  113. 1130 PRINT"PLAYER WINS!"
  114. 1140 PRINT
  115. 1150 PRINT"IF THE VALUE OF ANY STOCK FALLS TO 0,THAT STOCK GOES BANKRUPT"
  116. 1160 PRINT"AND ALL SHARES ARE SURRENDERED.THE VALUE OF THE STOCK IS THEN"
  117. 1170 PRINT"ESTABLISHED AT $100. IF THE VALUE OF ANY STOCK REACHES $150,"
  118. 1180 PRINT"THERE WILL BE A STOCK SPLIT.ANY PLAYERS OWNING SHARES OF THAT"
  119. 1190 PRINT"STOCK WILL RECEIVE THE EXTRA SHARES. THE VALUE OF THE STOCK"
  120. 1200 PRINT"IS HALVED (ROUNDED UP TO THE NEXT HIGHEST DOLLAR)."
  121. 1210 PRINT
  122. 1220 PRINT"A TABLE WILL BE PRINTED EACH YEAR GIVING THE CHANGE IN VALUE"
  123. 1230 PRINT"OF EACH STOCK, THE PRESENT PRICE, AND THE NUMBER OF SHARES"
  124. 1240 PRINT"EACH PLAYER OWNS OF EVERY STOCK. ALSO, ANY DIVIDENDS RECEIVED"
  125. 1250 PRINT"FOR THE YEAR WILL BE SHOWN ALONG WITH EACH PLAYERS TOTAL CASH"
  126. 1260 PRINT
  127. 1270 PRINT"******GOOD LUCK TO EVERYONE!******"
  128. 1280 PRINT
  129. 1290 PRINT"AVAILABLE SECURITIES, ABBREVIATION, DIVIDENDS PER SHARE"
  130. 1300 PRINT
  131. 1310 FOR N=1 TO 10
  132. 1320 GOSUB 4000
  133. 1325 PRINT S$,MID$(V$,3*N-2,3),MID$(Y$,4*N-3,4)
  134. 1330 NEXT N
  135. 1340 PRINT
  136. 1350 PRINT "NUMBER OF PLAYERS (1 TO 4)=";
  137. 1360 INPUT P
  138. 1370 IF P>4 THEN 1360
  139. 1380 IF P<=0 THEN 1360
  140. 1390 FOR I=1 TO 4: FOR J=1 TO 12: M(I,J)=0: NEXT J: NEXT I
  141. 1400 PRINT
  142. 1410 PRINT "NUMBER OF YEARS (3 TO 10)=";
  143. 1420 INPUT S
  144. 1430 IF S<3 THEN 1420
  145. 1440 IF S>10 THEN 1420
  146. 1450 FOR I=1 TO 9: F(I)=0: NEXT I
  147. 1460 FOR N=1 TO P
  148. 1470 M(N,1)=5000
  149. 1480 NEXT N
  150. 1490 FOR I=1 TO 10: T(I)=100: NEXT I
  151. 1510 Y=0
  152. 1520 REM
  153. 1530 REM
  154. 1540 REM   FIND MARKET CHANGES FOR NEXT ROUND,SEE IF BULL OR BEAR MARKET
  155. 1550 REM
  156. 1560 D=INT(RND(1)*11+1)
  157. 1570 C=INT(RND(1)*36+1)
  158. 1580 IF A(C,12)=1 THEN 1570
  159. 1590 A(C,12)=1
  160. 1600 FOR N=2 TO 10
  161. 1605 GOSUB 4000
  162. 1610 IF A(C,1)=1 THEN 1660
  163. 1620 W$="BEAR"
  164. 1630 F(N-1)=A(C,N)+E(D,N-1)
  165. 1640 T(N)=T(N)+F(N-1)
  166. 1650 GOTO 1720
  167. 1660 F(N-1)=A(C,N)+U(D,N-1)
  168. 1670 W$="BULL"
  169. 1680 T(N)=T(N)+F(N-1)
  170. 1690 REM
  171. 1700 REM   CHECK FOR STOCK SPLITS
  172. 1710 REM
  173. 1720 IF T(N)<150 THEN 1840
  174. 1725 PRINT
  175. 1730 PRINT "*** "+S$+" STOCKS SPLIT ***"
  176. 1740 IF T(N)/2=INT(T(N)/2) THEN 1770
  177. 1750 T(N)=INT(T(N)/2)+1
  178. 1760 GOTO 1780
  179. 1770 T(N)=T(N)/2
  180. 1780 FOR J=1 TO P
  181. 1790 M(J,N+1)=M(J,N+1)*2
  182. 1800 NEXT J
  183. 1810 REM
  184. 1820 REM   CHECK FOR BANKRUPT STOCKS
  185. 1830 REM
  186. 1840 IF T(N)>0 THEN 1910
  187. 1850 T(N)=100
  188. 1860 FOR J=1 TO P
  189. 1870 M(J,N+1)=0
  190. 1880 NEXT J
  191. 1890 PRINT "*** "+S$+" WENT BANKRUPT ***"
  192. 1900 PRINT "THESE STOCKS MUST BE SURRENDERED"
  193. 1910 NEXT N
  194. 1920 Y=Y+1
  195. 1930 REM
  196. 1940 REM   ADD EACH PLAYERS DIVIDENDS TO TOTAL CASH
  197. 1950 REM
  198. 1960 FOR N=1 TO P
  199. 1970 M(N,12)=0
  200. 1980 FOR J=1 TO 10
  201. 1990 IF T(J)<50 THEN 2010
  202. 2000 M(N,12)=M(N,12)+K(J)*M(N,J+1)
  203. 2010 NEXT J
  204. 2020 IF A(C,11)=0 THEN 2050
  205. 2030 M(N,12)=M(N,12)+M(N,3)*2
  206. 2040 PRINT "*** X-PANDO CORP. PAYS $2 DIVIDENDS PER SHARE ***"
  207. 2050 M(N,1)=M(N,1)+M(N,12)
  208. 2060 NEXT N
  209. 2070 REM
  210. 2080 REM
  211. 2090 REM   PRINT WHAT HAPPENED & CURRENT VALUES
  212. 2100 REM
  213. 2120 PRINT "*** YEAR ";Y;"*** "+W$+" MARKET ***"
  214. 2130 PRINT
  215. 2140 PRINT TAB(23);"PLAYER HOLDINGS    YEAR ";Y
  216. 2150 PRINT
  217. 2160 PRINT TAB(6);" +/-$    PRICE";
  218. 2170 FOR N=1 TO P
  219. 2180 PRINT TAB(18+8*N);N;
  220. 2190 NEXT N
  221. 2200 PRINT
  222. 2210 PRINT
  223. 2220 PRINT LEFT$(V$,3);TAB(7);"0";TAB(15);"100";
  224. 2230 FOR N=1 TO P
  225. 2240 PRINT TAB(18+8*N);M(N,2);
  226. 2250 NEXT N
  227. 2260 PRINT
  228. 2270 FOR N=1 TO 9
  229. 2280 PRINT MID$(V$,3*N+1,3);TAB(7);F(N);TAB(15);T(N+1);
  230. 2310 FOR J=1 TO P
  231. 2320 PRINT TAB(18+8*J);M(J,N+2);
  232. 2330 NEXT J
  233. 2340 PRINT
  234. 2350 NEXT N
  235. 2360 PRINT
  236. 2370 PRINT "DIVIDENDS FOR YEAR";
  237. 2380 FOR N=1 TO P
  238. 2390 PRINT TAB(18+8*N);M(N,12);
  239. 2400 NEXT N
  240. 2410 PRINT
  241. 2420 PRINT
  242. 2430 PRINT "NEW CASH TOTAL";
  243. 2440 FOR N=1 TO P
  244. 2450 PRINT TAB(18+8*N);M(N,1);
  245. 2460 NEXT N
  246. 2470 PRINT
  247. 2471 PRINT
  248. 2472 PRINT "NEW NET WORTH ";
  249. 2473 GOSUB 4500
  250. 2474 FOR N=1 TO P
  251. 2475 PRINT TAB(18+8*N);X(N);
  252. 2476 NEXT N
  253. 2480 IF Y=S THEN 2990
  254. 2490 REM
  255. 2500 REM
  256. 2510 REM   CHECK IF ANYONE WANTS TO SELL OR BUY ANYTHING
  257. 2520 REM
  258. 2530 FOR N=1 TO P
  259. 2540 PRINT
  260. 2550 PRINT "***  PLAYER ";N;" ***"
  261. 2560 PRINT
  262. 2570 PRINT "YOU NOW HAVE $";M(N,1)
  263. 2580 FOR J=1 TO 10
  264. 2590 IF M(N,J+1)<>0 THEN 2620
  265. 2600 NEXT J
  266. 2610 GOTO 2770
  267. 2620 PRINT "WANT TO SELL";
  268. 2630 INPUT R$
  269. 2640 IF R$="N" THEN 2760
  270. 2650 IF R$<>"Y" THEN 2630
  271. 2660 GOSUB 3160
  272. 2670 PRINT "NUMBER OF SHARES";
  273. 2680 INPUT R
  274. 2690 IF R<=M(N,J+1) THEN 2720
  275. 2700 PRINT "*** YOU ONLY HAVE ";M(N,J+1);" SHARES ***"
  276. 2710 GOTO 2670
  277. 2720 PRINT
  278. 2730 M(N,J+1)=M(N,J+1)-R
  279. 2740 M(N,1)=M(N,1)+R*T(J)
  280. 2750 GOTO 2560
  281. 2760 PRINT
  282. 2770 FOR J=1 TO 10
  283. 2780 IF M(N,1)>T(J) THEN 2810
  284. 2790 NEXT J
  285. 2800 GOTO 2950
  286. 2810 PRINT "WANT TO BUY";
  287. 2820 INPUT R$
  288. 2830 IF R$="N" THEN 2950
  289. 2840 IF R$<>"Y" THEN 2820
  290. 2850 GOSUB 3160
  291. 2860 PRINT "NUMBER OF SHARES";
  292. 2870 INPUT R
  293. 2880 IF R*T(J)<=M(N,1) THEN 2910
  294. 2890 PRINT "ONLY MONEY ENOUGH FOR ";INT(M(N,1)/T(J));"SHARES"
  295. 2900 GOTO 2860
  296. 2910 M(N,J+1)=M(N,J+1)+R
  297. 2920 M(N,1)=M(N,1)-R*T(J)
  298. 2930 PRINT "YOU NOW HAVE $";M(N,1)
  299. 2940 GOTO 2760
  300. 2950 NEXT N
  301. 2960 GOTO 1560
  302. 2970 REM
  303. 2980 REM
  304. 2990 REM   CLOSING OUT AT END OF GAME - PRINT FINAL TOTALS
  305. 3000 REM
  306. 3010 PRINT
  307. 3020 PRINT
  308. 3030 PRINT "*** FINAL TOTALS ARE:"
  309. 3040 PRINT
  310. 3050 PRINT "PLAYER          TOTAL"
  311. 3060 FOR N=1 TO P
  312. 3070 FOR J=1 TO 10
  313. 3080 M(N,1)=M(N,1)+T(J)*M(N,J+1)
  314. 3090 NEXT J
  315. 3100 PRINT
  316. 3110 PRINT N,M(N,1)
  317. 3120 NEXT N
  318. 3130 STOP
  319. 3140 REM
  320. 3150 REM
  321. 3160 REM   SUBROUTINE TO LOOK UP STOCK NAMES FOR BUY & SELL
  322. 3170 REM
  323. 3180 PRINT "NAME OF STOCK";
  324. 3190 INPUT R$
  325. 3200 FOR J=1 TO 10
  326. 3210 IF LEFT$(R$,2)=MID$(V$,3*J-2,2) THEN 3240
  327. 3220 NEXT J
  328. 3230 GOTO 3180
  329. 3240 RETURN
  330. 3250 REM
  331. 4000 ON N GOTO 4010,4020,4030,4040,4050,4060,4070,4080,4090,4100
  332. 4010 S$=A$
  333. 4015 RETURN
  334. 4020 S$=B$
  335. 4025 RETURN
  336. 4030 S$=C$
  337. 4035 RETURN
  338. 4040 S$=D$
  339. 4045 RETURN
  340. 4050 S$=E$
  341. 4055 RETURN
  342. 4060 S$=F$
  343. 4065 RETURN
  344. 4070 S$=G$
  345. 4075 RETURN
  346. 4080 S$=H$
  347. 4085 RETURN
  348. 4090 S$=I$
  349. 4095 RETURN
  350. 4100 S$=J$
  351. 4105 RETURN
  352. 4500 FOR N=1 TO P
  353. 4510 W=0
  354. 4520 FOR J=1 TO 10
  355. 4530 W=W+T(J)*M(N,J+1)
  356. 4540 NEXT J
  357. 4550 X(N)=W+M(N,1)
  358. 4560 NEXT N
  359. 4570 RETURN
  360. 9000 END
  361. 9100 REM ASDFGHJKL
  362. OR J=1 TO 10
  363. 4530 W=W+T(J)*M(N,J+1)
  364. 4540 NEXT J
  365. 4550